<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 预解析
        // console.log(num);  undefined
        // var num = 100;
        // console.log(num); // 100 

        // console.log(num);
        // const num = 100;
        // console.log(num);


        // 重名 

        // var num = 100;
        // var num = 200;
        // console.log(num); // 200
        // // const num1 = 50;
        // // const num1 = 60;
        // // console.log(num1); // 报错 let const不能重名
        

        // 块级作用域 

        // if(true){
        //     var num = 100;
        //     console.log(num); // 100
        // }

        // console.log(num); // 100


        // if(true){
        //     let num = 100;
        //     console.log(num); // 100
        // }

        // console.log(num); // 100 num is not defined
        // // let const 声明的变量只在块级作用域内有效
        // // 任何可执行的{} 在let 和const 看来 都是块级作用域

        // let 和const 的区别

        // let num = 100;
        // console.log(num); // 100
        // num = 200;
        // console.log(num); // 200


        // const num1 = 100;
        // console.log(num1); // 100
        // num1 = 200;
        // console.log(num1); // 报错 const 变量的值不能修改
        
        // let n;
        // console.log(n); // undefined   let 的变量可以不赋值
        // const m;
        // console.log(m); // 报错 const 必须赋值

        const person = {
            name: '杨璐',
            age: 20
        }

        person.name = '杨璐璐';

        console.log(person); // {name: "杨璐璐", age: 20}

        // const 如果赋值一个对象   
        // 保证对象嗯的地址不变即可 
        // 对象的属性的值可以修改
    </script>
</body>
</html>